﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace BattleCity
{
    public partial class Menu : Form
    {
        public Menu()
        {
            InitializeComponent();
            CheckForIllegalCrossThreadCalls = false;
        }
        BattleCityJuego Juego;

       
        private void cerrarToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void mostrarPuntaje()
        {
            label2.Text = Marcador.getMarcador().Puntos.ToString();
        }
        private void nuevoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if ( Juego != null) Juego.Detener();
            Juego = new BattleCityJuego(panel1);
            Marcador.getMarcador().PuntajeChange += new DelegadoMarcador(MostrarPuntaje);

            try
            {
                pictureBox2.Visible = false;
                pictureBox1.Visible = false;
                Juego.NuevaMision += new DelegadoMision(MostrarMision);
                Juego.Comenzar();
            }
            catch
            {
                DialogResult x = MessageBox.Show("Uno de los archivos de configuracion XML esta Corrupto", "Error Fatal", MessageBoxButtons.OK);
            }
            
        }
        
        private void MostrarPuntaje()
        {
             string puntos = Marcador.getMarcador().Puntos.ToString();
             label2.Text = puntos;
                        
                             
        }
        private void MostrarMision(string nombre)
        {

            label1.Text = nombre.Split(".".ToCharArray())[0];
            
        }
        private void acercaDeAlgoTankToolStripMenuItem_Click(object sender, EventArgs e)
        {
            About FormSalir = new About();
            FormSalir.Show();
        }

        private void Menu_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.D || e.KeyCode == Keys.A || e.KeyCode == Keys.W || e.KeyCode == Keys.S)
            {
                TanqueUser.getTanqueUser().NoAvanzar();
            }
        }

        private void Menu_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.D)
            {
                TanqueUser.getTanqueUser().AvanzarDerecha();
            }
            if (e.KeyCode == Keys.A)
            {
                TanqueUser.getTanqueUser().AvanzarIzquierda();
            }
            if (e.KeyCode == Keys.W)
            {
                TanqueUser.getTanqueUser().AvanzarArriba();
            }
            if (e.KeyCode == Keys.S)
            {
                TanqueUser.getTanqueUser().AvanzarAbajo();
            }
            if (e.KeyCode == Keys.Space)
            {
                TanqueUser.getTanqueUser().AtacarConAmetralladora();
            }
            if (e.KeyCode == Keys.K)
            {
                TanqueUser.getTanqueUser().AtacarConCanion();
            }
            if (e.KeyCode == Keys.L)
            {
                TanqueUser.getTanqueUser().AtacarConLanzaCohetes();
            }
        }
        private void Menu_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (Juego != null) Juego.Detener();
            DialogResult x = MessageBox.Show("Desea salir?", "programa", MessageBoxButtons.YesNo);
            if (x == DialogResult.No)
            {
                if (Juego != null) Juego.Continuar();
                e.Cancel = true;
            }
            
            
        }

        private void acercaDeAlgoTankToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            About about = new About();
            about.ShowDialog();
        }

        private void guardarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (Juego != null)
            {
                Juego.Detener();
                Juego.Guardar();
            }
        }

        private void reanudarUltimaPartidaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (Juego != null) Juego.Detener();
            Juego = new BattleCityJuego(panel1);
            Marcador.getMarcador().PuntajeChange += new DelegadoMarcador(mostrarPuntaje);
            try
            {
                Juego.ReanudarUltimaPartida();
            }
            catch
            {
                DialogResult x = MessageBox.Show("Error Fatal", "Uno de los archivos de configuracion XML esta Corrupto", MessageBoxButtons.OK);
                if (x == DialogResult.Yes)
                {
                    Close();
                }
            }
        }

        private void Menu_Load(object sender, EventArgs e)
        {
           
        }

        private void verAyudaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Ayuda ayuda = new Ayuda();
            ayuda.ShowDialog();
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            if (Juego != null) Juego.Detener();
            Juego = new BattleCityJuego(panel1);
            Marcador.getMarcador().PuntajeChange += new DelegadoMarcador(MostrarPuntaje);

            try
            {
                pictureBox2.Visible = false;
                pictureBox1.Visible = false;
                Juego.NuevaMision += new DelegadoMision(MostrarMision);
                Juego.Comenzar();
            }
            catch
            {
                DialogResult x = MessageBox.Show("Uno de los archivos de configuracion XML esta Corrupto", "Error Fatal", MessageBoxButtons.OK);
            }
            
        }

        private void rectangleShape1_Click(object sender, EventArgs e)
        {

        }

     
    }
}
